//摘自长春老师
#include <bits/stdc++.h>
using namespace std;
int n, d, p, r;
//dp[i][j]表示到第i个货架为止，标志为j的情况下最少花费
//标志j为三位二进制，最低位为1，即已有d货架的情况，中间位为1，即已有p货架的情况
//最高位为1，即已有r货架的情况
long long dp[300005][8]; //dp[i][j]表示到第i个货架为止，标志为j的情况下最少花费
int main() {
    cin >> n;
    for (int i = 0; i <= n; i++) {
        //初始化为最大值
        for (int j = 0; j < 8; j++) {
            dp[i][j] = 1e18;
        }
    }
    dp[0][0] = 0; //默认三个货架都没有的情况下，花费为0
    for (int i = 1; i <= n; i++) {
        cin >> d >> p >> r;
        for (int j = 0; j < 8; j++) {
            //枚举八种状态
            //转移增加d货架，多移动p+r
            dp[i][1 | j] = min(dp[i][1 | j], dp[i - 1][j] + p + r);
            //转移增加p货架，多移动d+r
            dp[i][2 | j] = min(dp[i][2 | j], dp[i - 1][j] + d + r);
            //转移增加r货架，多移动d+p
            dp[i][4 | j] = min(dp[i][4 | j], dp[i - 1][j] + d + p);
        }
    }
    cout << dp[n][7]; //最后三种货架都有的情况即为答案
    return 0;
}
